package com.honeybees.framework.pagination;

/**
 * <dl>
 * <dt><b> 分页计算工具 </b></dt>
 * <p>
 * <dd>功能描述</dd>
 * </dl>
 * <p>
 * Copyright (c) All rights reserved.
 * </p>
 *
 * @author 李远明
 * @since 2017-04-11 10:44
 */
public final class PageCalcUtils {

    /**
     * <dl>
     * <dt><b> 根据分页偏移量与每页显示数据条数，计算当前页码 </b></dt>
     * <p>
     * <dd>int pageNo = (offset / limit) + 1;</dd>
     * </dl>
     *
     * @param offset 偏移量，如 0、10
     * @param limit  每页显示数据条数，如 10
     * @return 当前页码，如 1、2
     * @author 李远明
     * @version 2017-04-11 10:06:58
     * @see #calcOffset(int, int)
     */
    public static int calcPageNo(int offset, int limit) {
        if (limit <= 0) {
            return 1;
        }
        return (offset / limit) + 1;
    }

    /**
     * <dl>
     * <dt><b> 根据当前页码与每页显示数据条数，计算分页偏移量（用于SQL查询） </b></dt>
     * <p>
     * <dd>int offset = (pageNo - 1) * pageSize;</dd>
     * </dl>
     *
     * @param pageNo   当前页码，如 1、2
     * @param pageSize 每页显示数据条数，如 10
     * @return 偏移量，如 0、10
     * @author 李远明
     * @version 2017-04-11 10:09:26
     * @see #calcPageNo(int, int)
     */
    public static int calcOffset(int pageNo, int pageSize) {
        pageNo = (pageNo <= 0) ? 1 : pageNo;
        return (pageNo - 1) * pageSize;
    }

}
